package luzhin;

import java.io.*;
/**
 * An abstract class for strategies making moves due to a given board.
 * @author lacungus
 *
 */
public abstract class Strategy {
	protected PrintWriter thinkingOutput = null;
	protected boolean isThinkingOutputOn = false;
	/**
	 * Makes a move.
	 * @param board
	 * @return
	 * @throws StrategyException
	 */
	public abstract Move makeMove(Board board) throws StrategyException;
	
	public void setThinkingOutput(PrintWriter thinkingOutput) {
		this.thinkingOutput = thinkingOutput;
	}
	
	public void setIsThinkingOutputOn(boolean isThinkingOutputOn) {
		this.isThinkingOutputOn = isThinkingOutputOn;
	}
}
